/* 
 * File:   Literal.cpp
 * Author: Gab'z
 * 
 * Created on 27 mai 2012, 21:35
 */

#include "Literal.h"
#include "../../Context.h"
#include "../../memento/EmptyMemento.h"
#include "Complex.h"
#include "exception/MementoException.h"

namespace calculator {
    // les nombres et expressions n'ont pas de nom, ce sont quand même des commandes
    // dont l'impression utilise une version redéfinie de toString() dans les sous classes

    Literal::Literal() : UndoableRedoableCommand("_literal") {
    }

    Literal::~Literal() {
    }

    std::string Literal::isExecutable() const {
        return "";
    }

    const Memento* Literal::createMemento() const throw (CommandException) {
        // rien à sauvegarder, on utilise le memento vide
        return new EmptyMemento(clone());
    }

    void Literal::restoreFromMemento(const Memento* memento) const throw (MementoException) {
        // rien à restaurer à partir du memento,
        // on dépile seulement la valeur ajoutée
        Context::getInstance()->getCurrentStack()->pop();
    }
}
